package com.kamistoat.meimeimall.meimeimallproduct.feign;

import com.kamistoat.meimeimall.common.To.seckillTo.SecKillProductCacheTo;
import com.kamistoat.meimeimall.meimeimallproduct.feign.fallback.SecKillFeignServiceFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * 使用fallback指定熔断策略。当远程接口被熔断时，所有调用该远程接口的地方改为执行fallback
 */
@FeignClient(value = "meimeimall-seckill", fallback = SecKillFeignServiceFallback.class)
public interface SecKillFeignService {

    /**
     * 商品详情页，远程查询未来三天的秒杀服务
     *
     * @param skuId skuId
     * @return 类间传输To
     */
    @ResponseBody
    @GetMapping("/getskuseckillinfo")
    SecKillProductCacheTo getSkuSecKill(@RequestParam Long skuId);

    /**
     * 获取未来所有的秒杀场次的商品信息
     * 外层List的每一个元素是一场秒杀
     * 每层List的每一个元素是这场秒杀的商品信息
     *
     * @return
     */
    @GetMapping("/getfutureseckillsession")
    @ResponseBody
    List<List<SecKillProductCacheTo>> getFutureSecKillSessionList();
}
